const express = require('express');
const router = express.Router();
const md5=require('md5')
const Account=require('../models/Account')
const User=require('../models/User')
//检测登录中间件
const checkLogin=require('../middlewares/checkLogin')

//首页路由
router.get('/',(req,res)=>{
  res.redirect('/account')
})

//注册
router.get('/reg',checkLogin, (req, res)=> {
  res.render('reg')
});

router.post('/reg', checkLogin,async (req, res) => {
  try {
    console.log('收到的数据：', req.body); 
    const data = {
      // 用户名：有传值则用传的值，否则默认 'admin'
      username: req.body.username || 'admin',
      // 密码：有传值则 MD5 加密，否则对默认密码 '123456789' 进行 MD5 加密
      password: md5(req.body.password) || md5('123456789') 
    };
    await User.create(data); // 创建用户（无需返回整个用户，注册成功即可跳转）
    // 注册成功 → 重定向到登录页
    res.redirect('/login'); 
  } catch (err) {
    res.status(400).send('注册失败：' + err.message);
  }
});

//登录
router.get('/login', checkLogin,(req, res)=> {
  res.render('login')
});


router.post('/login', checkLogin,async (req, res) => {
  try {
    const { username, password } = req.body;
    const encryptedPwd = md5(password); // 加密密码（和注册时保持一致）

    // 查询用户
    const user = await User.findOne({ username, password: encryptedPwd });

    if (user) {
      // 登录成功：写入session（存储用户关键信息，避免敏感数据）
      console.log('登录成功，用户信息：', user);
      req.session.user = {
        id: user._id,
        username: user.username,
        // 可添加其他需要的信息（如角色、昵称等）
      };

      // 跳转页面（例如跳转到首页）
      res.redirect('/account/create'); 
    } else {
      // 用户名或密码错误，跳回登录页并提示
      res.redirect('/login?error=用户名或密码错误');
    }
  } catch (err) {
    res.status(500).send('登录失败：' + err.message);
  }
});


/* GET home page. */
router.get('/account', checkLogin,async function (req, res, next) {
  try {
    // 查询所有 Account 数据
    const accounts = await Account.find();
    // 计算 in 的总和
    let totalIn = 0;
    accounts.forEach(account => {
      totalIn += account.in;
    });
    // 计算 out 的总和
    let totalOut = 0;
    accounts.forEach(account => {
      totalOut += account.out;
    });
    // 渲染 list 页面，并传递总和数据
    res.render('list', { totalIn, totalOut, accounts });
  } catch (err) {
    res.status(500).send('查询失败：' + err.message);
  }
});

router.get('/account/create', checkLogin,function(req, res, next) {
  res.render('add')
});

// 若需要跳转页面（适合表单提交）
router.post('/account', checkLogin,async(req, res)=>{
  try {
    console.log('收到的数据：', req.body); 
    const data = {
      in: req.body.in || 10,
      out: req.body.out || 10
    };
    const newAccount = await Account.create(data);
    //res.status(201).json(newAccount);
    res.render('success',{message:'提交成功',url:'/account',msg:'前往账单页'})
  } catch (err) {
    res.status(400).send('提交失败：' + err.message);
  }
});


//退出登录
router.post('/logout', checkLogin,function(req, res, next) {
  req.session.destroy(()=>{
      res.render('success',{message:'退出成功',url:'/login',msg:'返回登录'})
  })
});
module.exports = router;
